#include <stdio.h>
#include <stdlib.h> 
#include <pthread.h> 
#include <time.h>
#include <iostream>

#include "Oeuf.h"

#include "Reine.h"
#include "Ouvriere.h"
#include "Batisseuse.h"
#include "Couveuse.h"

// Méthode exécutée par les threads fourmis
void* runOeuf(void* arg);

Oeuf :: Oeuf(Fourmilliere* _fm)
{
	fm = _fm;
	pthread_create(&t, NULL, runOeuf, this);
}

void* runOeuf(void* arg)
{
	Oeuf* o = (Oeuf*)arg;
	
	o->fm->AddOeuf();

	sleep(o->fm->TEMPS_ECLOSION * o->fm->RAPPORT_SECONDE_JOUR + rand()%3);

	// Si la taille est ok

	
	if(o->fm->GetPV() > o->fm->GetPopulationTotale())
	{
		int pourcentage = rand() % 100;

		if(pourcentage < o->fm->POURCENTAGE_OUVRIERE)
			new Ouvriere(o->fm);

		else if(pourcentage < o->fm->POURCENTAGE_COUVEUSE + o->fm->POURCENTAGE_OUVRIERE)
			new Couveuse(o->fm);

		else if(pourcentage < o->fm->POURCENTAGE_BATISSEUSE + o->fm->POURCENTAGE_COUVEUSE + 				      o->fm->POURCENTAGE_OUVRIERE)
			new Batisseuse(o->fm);
	}

	o->fm->OeufEclos();
	return NULL;
}


